/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import Reportes.HoraExtra;
import Model.Parametro;
import Reportes.PedidoReporte;
import Model.Usuario;
import Presenter.ParametroPresenter;
import Principals.Main;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.hibernate.Query;

/**
 *
 * @author CARLOS
 */
public class PedidoReporteDAO {
     public static List<PedidoReporte> buscarPedidoReporte(Date fechaInicio, Date fechaFin) {
        String q = "select pe.fecha_registro \"fechaRegistro\",pr.nombre\"producto\" ,em.nombres|| ' ' || em.apellido_paterno \"empleado\" ,cl.nombres|| ' ' || cl.apellido_paterno \"cliente\" ,\n" +
"(select valor_string from parametro where id_parametro=em.tipo_vehiculo) \"vehiculo\" , pe.fecha_entrega \"fechaEntrega\", pe.estado\n" +
"\n" +
"from pedido pe\n" +
"inner join cliente cl on cl.id_cliente=pe.id_cliente\n" +
"inner join producto pr on pr.id_producto=pe.id_producto\n" +
"left join envio_pedido en on en.id_envio_pedido=pe.id_envio_pedido\n" +
"left join empleado em on em.id_empleado=en.id_empleado" +
" where pe.fecha_registro between date_trunc('day', cast(:fechaInicio as timestamp))  and date_trunc('day', cast(:fechaFin  as timestamp))\n" +
"\n" +
" ";
        //  int cont = 0;
        //   q += " where fecha between :fechaInicio and :fechaFin ";
       
        Main.usrSesion.session.beginTransaction();
        Query query = Main.usrSesion.session.createSQLQuery(q);

          query.setParameter("fechaInicio", fechaInicio);
          query.setParameter("fechaFin", fechaFin);

        Main.usrSesion.session.getTransaction().commit();
        List<Object[]> b = query.list();

        List<PedidoReporte> a = new LinkedList<PedidoReporte>();
PedidoReporte h = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddHHmmss");


        for (Object[] o : b) {
       try{
            Date fecha=new Date();
            Date fecha2=new Date();

            
            
            fecha= (Date) o[0];
            String aa,bb,cc,dd;
            aa= (String) o[1];
            
            cc=String.valueOf( o[3]);
            
          
            int d;
            
            d= (Integer) o[6];
            String estado="";
             if (d==0){
                 estado="Pendiente";
             fecha2=null;
             bb="";
             dd="";
             }else{
            dd=String.valueOf( o[4]);
            bb=String.valueOf( o[2]);     
                   try{
            fecha2= (Date) o[5];
            }catch(Exception ex){
            fecha2=null;
            }
             }
           if (d==1)estado="En Ruta";
           if (d==2)estado="Entregado";
            h=new PedidoReporte(fecha,aa,bb , cc,dd, estado,fecha2);
            a.add(h);
            
       }catch(Exception d){}
        }



        return a;
    }
}
